package com.appleyk.config2;

import com.appleyk.service.IService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * <p>越努力，越幸运</p>
 *
 * @author appleyk
 * @version V.0.1.1
 * @blob https://blog.csdn.net/appleyk
 * @date created on  8:43 下午 2020/12/9
 */
public class ImportContext2 {
    public static void main(String[] args) {

        // 这里不管参数指向的是ConfigB也好，还是ConfigA也好，都不会影响最终的结果
        ApplicationContext context = new AnnotationConfigApplicationContext(ConfigB.class);
        IService bean = context.getBean(IService.class);
        bean.say();
        /**
         * 这里的案例主要是证明@Import注解导入的类要优先于@Configuration注解的类
         * ConfigA类中@Import了ConfigB类，两个配置类均配置了A和B对于接口IService的实现bean
         * 但由于两个需要注入的bean都加了@ConditionalOnMissingBean注解，因此
         * 这里会牵扯到一个顺序问题，如果A先注入，那B就不会注入，反之，则A不会注入
         * 这里，打印结果是BService say.
         * 很显然，最先注入的是BService，也就是@Import优先于@Configuration先处理Bean的注入
         */

    }
}
